/*
* created by Administrator on 2018/11/29
* 好的代码像粥一样,是得用时间和精力熬的。
*/
//异步操作同步化【写法】

//callback 回调函数
//异步操作: 将来某一个时间点执行的代码片段【发生的事情】
// setInterval();
// setTimeout();
// ajax();
// setTimeout(function(){
//     console.log(5);
// },5000);
//5秒钟之后打印1
//在打印5之后 再过10s打印10
//在打印10之后 再过15s打印16
// setTimeout(function(){
//     console.log(1);
//     setTimeout(function(){
//         console.log(10);
//         setTimeout(function(){
//             console.log(16);
//         },15000);
//     },10000);
// },5000);

//同步操作：就在现在这个时间段内马上要执行的代码片段  js中99%的代码默认同步
// let a=1;
// console.log(a);
// for(let i=0; i<10;i++){
//     try{
//         if(i<5){
//             console.log(i);
//         }
//     }catch(e){
//             console.log(e);
//     }
// }

//new Promise =promise
 function delay(time,value) {
     return new Promise(function (resolve) {
        setTimeout(function () {
             resolve(value);
        }, time);
    });
 }
 delay(5000,5)
     .then(function(value) {console.log(value); return delay(10000,10)})
    .then(function(value) {console.log(value); return delay(15000,16)})
    .then(function(value) {console.log(value);})
    .catch(function(error) {console.log(error);})
    .finally(function(){});

// console.log(value);  //成功要做的事情

// let promise = new Promise(function(resolve,reject){

// });

//静态方法：把函数当对象处理
// function a(){
//
// }
// a.a1 = function(){
//
// };
// a.a2 = 3;

function delay1(time,value) {
    return new Promise(function (resolve) {
        setTimeout(function () {
            resolve(value);
        }, time);
    });
}
let arr = [
    // delay(5000,5).then(function(data){console.log(data);}),
    // delay(3000,3).then(function(data){console.log(data);}),
    // delay(1000,1).then(function(data){console.log(data);})
    delay1(5000,5),
    delay1(3000,3),
    delay1(1000,1)
];

Promise.race(arr).then(function(data){console.log(data);}); //竞速
// Promise.all(arr).then(function(data){console.log(data);}); //并发

// console.log(promise = new Promise(function(resolve,reject){}));
// console.log(new Promise(function(resolve,reject){}));

// 唯一标识符Symbol
var a = Symbol ('hello,world!');
console.log(a === a);
console.log(Symbol('hello,world!') === Symbol('hello,world!'));

function createPerson(){
    var name = Symbol('name');
    var age = Symbol('age');
    var gender = Symbol ('gender');
    var res = {
        [name]: 'lipei',
        [age]: 20,
        [gender]: false,
    };
    console.log(res[name],res[age],res[gender]);
    return res;
}
// createPerson();
